// pages/profile/profile.js
import { userBehavior } from './behavior'
import { getStorage, setStorage } from '../../../../utils/storage'
import { reqUpdateUserInfo, reqUploadFile } from '../../../../api/user'
import { toast } from '../../../../utils/extendApi'

Page({
  // 页面的初始数据
  data: {
    isShowPopup: false // 控制更新用户昵称的弹框显示与否
  },

  // 注册 behavior: 
  behaviors: [userBehavior],

  // 显示修改昵称弹框
  onUpdateNickName() {
    this.setData({
      isShowPopup: true,
      'userInfo.nickname':this.data.userInfo.nickname,

    })
  },

  // 弹框取消按钮
  cancelForm() {
    this.setData({
      isShowPopup: false
    })
  },

  // 更新用户头像：
  async chooseAvatar(event) {
    // 获取头像的临时路径
    const { avatarUrl } = event.detail

    // 第二种方法：实现本地资源上传 min-request 提供的 upload 方法
    const res = await reqUploadFile(avatarUrl, 'file')
    this.setData({
      'userInfo.headimgurl': res.data
    })

    // 第一种方法： 实现本地资源上传
    // 将临时路径上传到 服务器：wx.uploadFile
    // wx.uploadFile({
    //   url: 'https://gmall-prod.atguigu.cn/mall-api/fileUpload',//开发者服务器地址
    //   filePath: avatarUrl,// 要上传文件的资源路径
    //   name: 'file',
    //   header: {
    //     token: getStorage('token')
    //   },
    //   success: (res) => {
    //     // console.log(res);
    //     // 调用 wx.uploadFile 方法，返回的数据是 JSON 字符串，{"..."}，需使用 JSON.parse 进行转换
    //     const uploadRes = JSON.parse(res.data)
    //     // console.log(uploadRes);

    //     this.setData({
    //       'userInfo.headimgurl': uploadRes.data
    //     })

    //   }
    // })


  },

  // 更新用户信息：
  async updateUserInfo() {
    // 调用接口 api 函数 更新用户信息：
    const res = await reqUpdateUserInfo(this.data.userInfo)

    if (res.code === 200) {
      //  用户信息更新成功以后，需要将最新的用户信息 存储到本地
      setStorage('userInfo', this.data.userInfo) //最新用户信息

      //  同时存储到 store
      this.setUserInfo(this.data.userInfo)

      // 给用户进行提示：
      toast({
        title:'用户信息更新成功'
      })
    }
  },

  // 获取用户昵称：
  getNickName(event){
    // console.log(event.detail.value);
    const {nickname} = event.detail.value //解构修改后、最新的的用户昵称
    // console.log(nickname);
    this.setData({
      'userInfo.nickname':nickname,
      isShowPopup:false
    })
  }
})
